SIMT processors choose which instruction to execute almost every SIMT cycle. Each instruction identifies the resources that it requires, and when those resources are available the instruction becomes a candidate for execution. At each SIMT cycle a potentially different group of threads are selected to execute.
The SIMT execution engine is augmented with micro-coded instruction execution. Most instructions are processed without the use of micro-code in a normal SIMT mode. When a micro-coded instruction is detected, micro-code can take over the execution pipeline and perform a series of micro-code instructions, and then return the execution pipeline back to normal instruction processing.